{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "fafd8d88",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "0601a89c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Channel</th>\n",
       "      <th>Region</th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>12669</td>\n",
       "      <td>9656</td>\n",
       "      <td>7561</td>\n",
       "      <td>214</td>\n",
       "      <td>2674</td>\n",
       "      <td>1338</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>7057</td>\n",
       "      <td>9810</td>\n",
       "      <td>9568</td>\n",
       "      <td>1762</td>\n",
       "      <td>3293</td>\n",
       "      <td>1776</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>6353</td>\n",
       "      <td>8808</td>\n",
       "      <td>7684</td>\n",
       "      <td>2405</td>\n",
       "      <td>3516</td>\n",
       "      <td>7844</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>13265</td>\n",
       "      <td>1196</td>\n",
       "      <td>4221</td>\n",
       "      <td>6404</td>\n",
       "      <td>507</td>\n",
       "      <td>1788</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>22615</td>\n",
       "      <td>5410</td>\n",
       "      <td>7198</td>\n",
       "      <td>3915</td>\n",
       "      <td>1777</td>\n",
       "      <td>5185</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>435</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>29703</td>\n",
       "      <td>12051</td>\n",
       "      <td>16027</td>\n",
       "      <td>13135</td>\n",
       "      <td>182</td>\n",
       "      <td>2204</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>436</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>39228</td>\n",
       "      <td>1431</td>\n",
       "      <td>764</td>\n",
       "      <td>4510</td>\n",
       "      <td>93</td>\n",
       "      <td>2346</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>437</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>14531</td>\n",
       "      <td>15488</td>\n",
       "      <td>30243</td>\n",
       "      <td>437</td>\n",
       "      <td>14841</td>\n",
       "      <td>1867</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>438</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>10290</td>\n",
       "      <td>1981</td>\n",
       "      <td>2232</td>\n",
       "      <td>1038</td>\n",
       "      <td>168</td>\n",
       "      <td>2125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>439</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>2787</td>\n",
       "      <td>1698</td>\n",
       "      <td>2510</td>\n",
       "      <td>65</td>\n",
       "      <td>477</td>\n",
       "      <td>52</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>440 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Channel  Region  Fresh   Milk  Grocery  Frozen  Detergents_Paper  \\\n",
       "0          2       3  12669   9656     7561     214              2674   \n",
       "1          2       3   7057   9810     9568    1762              3293   \n",
       "2          2       3   6353   8808     7684    2405              3516   \n",
       "3          1       3  13265   1196     4221    6404               507   \n",
       "4          2       3  22615   5410     7198    3915              1777   \n",
       "..       ...     ...    ...    ...      ...     ...               ...   \n",
       "435        1       3  29703  12051    16027   13135               182   \n",
       "436        1       3  39228   1431      764    4510                93   \n",
       "437        2       3  14531  15488    30243     437             14841   \n",
       "438        1       3  10290   1981     2232    1038               168   \n",
       "439        1       3   2787   1698     2510      65               477   \n",
       "\n",
       "     Delicassen  \n",
       "0          1338  \n",
       "1          1776  \n",
       "2          7844  \n",
       "3          1788  \n",
       "4          5185  \n",
       "..          ...  \n",
       "435        2204  \n",
       "436        2346  \n",
       "437        1867  \n",
       "438        2125  \n",
       "439          52  \n",
       "\n",
       "[440 rows x 8 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv(\"Wholesale customers data.csv\")\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "29c8c246",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 440 entries, 0 to 439\n",
      "Data columns (total 8 columns):\n",
      " #   Column            Non-Null Count  Dtype\n",
      "---  ------            --------------  -----\n",
      " 0   Channel           440 non-null    int64\n",
      " 1   Region            440 non-null    int64\n",
      " 2   Fresh             440 non-null    int64\n",
      " 3   Milk              440 non-null    int64\n",
      " 4   Grocery           440 non-null    int64\n",
      " 5   Frozen            440 non-null    int64\n",
      " 6   Detergents_Paper  440 non-null    int64\n",
      " 7   Delicassen        440 non-null    int64\n",
      "dtypes: int64(8)\n",
      "memory usage: 27.6 KB\n"
     ]
    }
   ],
   "source": [
    "data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "2e01ed33",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Channel</th>\n",
       "      <th>Region</th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.322727</td>\n",
       "      <td>2.543182</td>\n",
       "      <td>12000.297727</td>\n",
       "      <td>5796.265909</td>\n",
       "      <td>7951.277273</td>\n",
       "      <td>3071.931818</td>\n",
       "      <td>2881.493182</td>\n",
       "      <td>1524.870455</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.468052</td>\n",
       "      <td>0.774272</td>\n",
       "      <td>12647.328865</td>\n",
       "      <td>7380.377175</td>\n",
       "      <td>9503.162829</td>\n",
       "      <td>4854.673333</td>\n",
       "      <td>4767.854448</td>\n",
       "      <td>2820.105937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>55.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>25.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3127.750000</td>\n",
       "      <td>1533.000000</td>\n",
       "      <td>2153.000000</td>\n",
       "      <td>742.250000</td>\n",
       "      <td>256.750000</td>\n",
       "      <td>408.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>8504.000000</td>\n",
       "      <td>3627.000000</td>\n",
       "      <td>4755.500000</td>\n",
       "      <td>1526.000000</td>\n",
       "      <td>816.500000</td>\n",
       "      <td>965.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>16933.750000</td>\n",
       "      <td>7190.250000</td>\n",
       "      <td>10655.750000</td>\n",
       "      <td>3554.250000</td>\n",
       "      <td>3922.000000</td>\n",
       "      <td>1820.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>112151.000000</td>\n",
       "      <td>73498.000000</td>\n",
       "      <td>92780.000000</td>\n",
       "      <td>60869.000000</td>\n",
       "      <td>40827.000000</td>\n",
       "      <td>47943.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Channel      Region          Fresh          Milk       Grocery  \\\n",
       "count  440.000000  440.000000     440.000000    440.000000    440.000000   \n",
       "mean     1.322727    2.543182   12000.297727   5796.265909   7951.277273   \n",
       "std      0.468052    0.774272   12647.328865   7380.377175   9503.162829   \n",
       "min      1.000000    1.000000       3.000000     55.000000      3.000000   \n",
       "25%      1.000000    2.000000    3127.750000   1533.000000   2153.000000   \n",
       "50%      1.000000    3.000000    8504.000000   3627.000000   4755.500000   \n",
       "75%      2.000000    3.000000   16933.750000   7190.250000  10655.750000   \n",
       "max      2.000000    3.000000  112151.000000  73498.000000  92780.000000   \n",
       "\n",
       "             Frozen  Detergents_Paper    Delicassen  \n",
       "count    440.000000        440.000000    440.000000  \n",
       "mean    3071.931818       2881.493182   1524.870455  \n",
       "std     4854.673333       4767.854448   2820.105937  \n",
       "min       25.000000          3.000000      3.000000  \n",
       "25%      742.250000        256.750000    408.250000  \n",
       "50%     1526.000000        816.500000    965.500000  \n",
       "75%     3554.250000       3922.000000   1820.250000  \n",
       "max    60869.000000      40827.000000  47943.000000  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "5d664e90",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.70833271, 0.53987376, 0.42274083, 0.01196489, 0.14950522,\n",
       "        0.07480852],\n",
       "       [0.44219826, 0.61470384, 0.59953989, 0.11040858, 0.20634248,\n",
       "        0.11128583],\n",
       "       [0.39655169, 0.5497918 , 0.47963217, 0.15011913, 0.2194673 ,\n",
       "        0.48961931],\n",
       "       ...,\n",
       "       [0.36446153, 0.38846468, 0.7585445 , 0.01096068, 0.37223685,\n",
       "        0.04682745],\n",
       "       [0.93773743, 0.1805304 , 0.20340427, 0.09459392, 0.01531   ,\n",
       "        0.19365326],\n",
       "       [0.67229603, 0.40960124, 0.60547651, 0.01567967, 0.11506466,\n",
       "        0.01254374]])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.preprocessing import Normalizer\n",
    "from sklearn.model_selection import train_test_split\n",
    "X = data.iloc[:,2:].values\n",
    "X_normalizer=Normalizer(norm='l2').transform(X)\n",
    "X_normalizer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "859e5347",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.lines.Line2D at 0x208d0752290>"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.cluster import KMeans \n",
    "from sklearn.metrics import silhouette_samples, silhouette_score\n",
    "\n",
    "score=[]\n",
    "for i in range(2,7):\n",
    "    cluster= KMeans(n_clusters=i, random_state=0).fit(X_normalizer)\n",
    "    score.append(silhouette_score(X_normalizer,cluster.labels_))\n",
    "\n",
    "plt.plot(range(2,7),score)\n",
    "best_K = pd.DataFrame(score).idxmax()[0]+2\n",
    "plt.axvline(best_K,ls=':')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "890a9220",
   "metadata": {},
   "source": [
    "###  不知道这个建模怎么弄出来的\n",
    "cluster= KMeans(n_clusters=best_K+1, random_state=0).fit(X_normalizer)\n",
    "cluster_labels = cluster.labels_ "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "c551878e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x208e66ada80>"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "cluster= KMeans(n_clusters=best_K+1, random_state=0).fit(X_normalizer) \n",
    "cluster_labels = cluster.labels_\n",
    "result = pd.value_counts(cluster_labels)\n",
    "fig = plt.figure()\n",
    "ax = fig.gca()\n",
    "labels ='0','1','2'\n",
    "sizes =[15,30,45]\n",
    "colors =['yellowgreen','gold','#FF0000']\n",
    "ax.spines['top'].set_visible(False)\n",
    "ax.spines['right'].set_visible(False)\n",
    "ax.spines['bottom'].set_visible(False)\n",
    "ax.spines['left'].set_visible(False)\n",
    "ax.pie(result, labels=labels, colors=colors,\n",
    "       autopct='%1.1f%%',\n",
    "       radius=0.25, center=(0,0), frame=True)\n",
    "plt.axis('off')\n",
    "plt.legend(loc='lower right')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56d14667",
   "metadata": {},
   "source": [
    "###  同理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6e021811",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.1"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
